
package iks.net
{
	/**
	 * 装载管理类
	 * @author StefanieKaka
	 */
	internal final class KLoaderManager
	{
		/// 单态模式, 创建一个KLoaderManager管理对象
		public function KLoaderManager(pc : PrivateClass)
		{
			if (!(pc is PrivateClass))
				throw new Error("不能创建装载管理类对象");
			
			m_queue = new Vector.<KLoader>();
		}
		
		/// 获得KLoaderManager实例
		public static function getInstance() : KLoaderManager
		{
			if (m_manager == null)
				m_manager = new KLoaderManager(new PrivateClass());
			
			return m_manager;
		}
		
		/**
		 * 将新的KLoader装入队尾
		 * @param	ldr 等待装图的KLoader
		 */
		public function offer(ldr : KLoader) : void
		{
			m_queue.push(ldr);
		}
		
		/**
		 * 从队首弹出KLoader
		 */
		public function poll() : void
		{
			m_queue.shift();
		}
		
		/**
		 * 根据索引得到KLoader
		 * @param	idx KLoader索引
		 */
		public function getLoader(idx : int) : KLoader
		{
			if (idx < 0 || idx >= m_queue.length)
				return null;
				
			return m_queue[idx];
		}
		
		/// 判断队列是否为空
		public function isEmpty() : Boolean
		{
			return m_queue.length == 0;
		}
		
		private var m_queue : Vector.<KLoader> = null;
		private static var m_manager : KLoaderManager = null;
	}

}

class PrivateClass
{

}

